<?php
/**
 * 
 * 会员模块
 * @author ChunYang.Jiang<chunyang@staff.sina.com.cn>
 * @copyright sina
 * @date 2011-04-11
 * @version $Id$
 *
 */
class User extends Controller
{
	public function __construct()
	{
		parent::__construct();
		$tabs = array(
			array(
				'name'	=> '添加管理员',
				'url'	=> '/Admin/User/Add',
			),
			array(
				'name'	=> '查看管理员',
				'url'	=> '/Admin/User/Show',
			),
		);
		$this->assign('tabs', $tabs);
	}
	
	public function add()
	{
		$this->display('User/add.html');
	}
	
	public function doAdd()
	{
		$result = $this->_checkField(array('uname','passwd','alias'));
		if (true === $result){
			if (UserModule::getUserByUname($_POST['uname'])){
				Util::msgRedirect('用户名重复');
			}
			$row['uname'] = $_POST['uname'];
			$row['passwd'] = md5(trim($_POST['passwd']));
			$row['alias'] = $_POST['alias'];
			$uid = UserModule::add($row);
			if (!$uid) {
				Util::msgRedirect('添加失败');
			}else{
				Util::msgRedirect('添加成功', '/Admin/User');
			}
		}else{
			Util::msgRedirect($result);
		}
	}
	
	public function del()
	{
		$uid = isset($_GET['uid']) && $_GET['uid'] && is_numeric($_GET['uid']) ? intval($_GET['uid']) : Util::msgRedirect('缺少UID或者不合法');
		if (!UserModule::getUserById($uid)){
			Util::msgRedirect('用户不存在');
		}
		if (UserModule::del($uid)){
			Util::msgRedirect('删除成功', '/Admin/User');
		}else{
			Util::msgRedirect('操作失败');
		}
	}
	
	public function edit()
	{
		$uid = isset($_GET['uid']) && $_GET['uid'] && is_numeric($_GET['uid']) ? intval($_GET['uid']) : Util::msgRedirect('缺少UID或者不合法');
		$userInfo = UserModule::getUserById($uid);
		if (!$uid){
			Util::msgRedirect('用户不存在');
		}
		$this->assign('userInfo', $userInfo);
		$this->display('User/edit.html');
	}
	
	public function doEdit()
	{
		$fields = array('alias', 'uid');
		$chkPasswd = isset($_POST['passwd']) && $_POST['passwd'];
		if ($chkPasswd) $fields[] = 'passwd';
		$result = $this->_checkField($fields);
		if (true === $result) {
			$uid = $_POST['uid'];
			//$row['uname'] = trim($_POST['uname']);
			$row['alias'] = trim($_POST['alias']);
			if ($chkPasswd) $row['passwd'] = md5(trim($_POST['passwd']));
			if (UserModule::update($uid, $row)){
				Util::msgRedirect('更新成功', '/Admin/User');
			}else{
				Util::msgRedirect('更新失败');
			}
		}else{
			Util::msgRedirect($result);
		}
	}
	
	public function Show()
	{
		$total = 0;
		$pageSize = 20;
		$page = isset($_GET['page']) && is_numeric($_GET['page']) && $_GET['page']>0 ? intval($_GET['page']) : 1;
		$start = ($page-1)*$pageSize;
		
		$userList = UserModule::getUser(1, 'id asc', $start, $pageSize, $total);
		
		Util::page($total, $pageSize, $this->tpl);
		
		$this->assign('userList', $userList);
		$this->display('User/show.html');
	}
	
	protected function _checkField($fields=array())
	{
		if (in_array('uname', $fields)){
			if (!isset($_POST['uname']) || !$_POST['uname'] || !preg_match('/\w{3,30}/', $_POST['uname'])){
				return '缺少用户名或用户名不合法';
			}
		}
		if (in_array('passwd', $fields)){
			if ( !isset($_POST['passwd']) || !$_POST['passwd'] ){
				return '密码没有填写';
			}
			if (!isset($_POST['passwd2']) || ($_POST['passwd'] != $_POST['passwd2'])){
				return '密码不一致';
			}
		}
		if (in_array('alias', $fields)){
			if (!isset($_POST['alias']) || !$_POST['alias']){
				return '缺少真实姓名';
			}
		}
		if (in_array('uid', $fields)){
			if (!isset($_POST['uid']) || !$_POST['uid'] || !is_numeric($_POST['uid'])){
				return '缺少uid或者不合法';
			}
		}
		return true;
	}
}